﻿using System;
using System.Collections.Generic;
using System.Text;
using static PEUtils.LogColor;

namespace PEUtils
{
    //服务器端使用的日志输出器
    class ConsoleLogger : ILogger
    {
        public void Log(string msg, LogColor color = LogColor.None)
        {
            WriteConsoleLog(msg, color);
        }
        public void Warn(string msg)
        {
            WriteConsoleLog(msg, LogColor.Yellow);
        }
        public void Error(string msg)
        {
            WriteConsoleLog(msg, LogColor.Red);
        }
        private void WriteConsoleLog(string msg, LogColor color)
        {
            switch (color)
            {
                case Red:
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Orange:
                    Console.ForegroundColor = ConsoleColor.DarkYellow;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Yellow:
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Green:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Cyan:
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Blue:
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Magenta:
                    Console.ForegroundColor = ConsoleColor.Magenta;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                case Gray:
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.WriteLine(msg);
                    Console.ForegroundColor = ConsoleColor.Gray;
                    break;
                default:
                    Console.WriteLine(msg);
                    break;
            }
        }
    }
}
